<?php

/**
 * PHPUnit测试自动加载器
 * 处理Packets命名空间和Packets目录的大小写问题
 */

// 引入Composer自动加载器
require_once __DIR__ . '/../vendor/autoload.php';

// 手动包含BinaryTestCase基类
require_once __DIR__ . '/PHPUnit/Binary/BinaryTestCase.php';

// 注册自定义自动加载器处理包类的大小写问题
spl_autoload_register(function ($class) {
    $prefix = 'Dongasai\\WkProtoPhp\\';
    $base_dir = __DIR__ . '/../src/';
    
    $len = strlen($prefix);
    if (strncmp($prefix, $class, $len) !== 0) {
        return;
    }
    
    $relative_class = substr($class, $len);
    $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
    
    // 如果标准路径不存在，尝试小写Packets目录
    if (!file_exists($file) && strpos($relative_class, 'Packets\\') === 0) {
        $file = $base_dir . 'Packets/' . substr(str_replace('\\', '/', $relative_class), 8) . '.php';
    }
    
    if (file_exists($file)) {
        require $file;
    }
});